package main

import (
	"fmt"
	"sync"
	"time"
)

// 在主线程中（可以理解为进程中）中，开启一个goroutine，该协程每隔50毫秒输出”你好golang“
// 在主线程中也每隔50毫秒输出“你好golang”，输出10次后，退出程序
// 要求主线程和goroutine同时执行
// 使用sync.WaitGroup让主进程等待协程

var wg sync.WaitGroup

func test(n int) {
	for i := 0; i < 10; i++ {
		fmt.Println("test", n, "你好golang-", i)
		time.Sleep(time.Second * 2)
	}
	wg.Done() // 协程计数器-1
}

func main() {
	wg.Add(1)  // 协程计数器+1
	go test(1) // 表示开启一个协程
	wg.Add(1)  // 协程计数器+1
	go test(2) // 开启第二个协程
	for i := 0; i < 10; i++ {
		fmt.Println("main 你好golang-", i)
		time.Sleep(time.Second)
	}
	wg.Wait()
	fmt.Println("主程序退出")
}
